package com.tarena.lbs.attach.util;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileUtil {
    /**
     * 创建临时文件
     * 此方法用于处理上传的文件，将其保存到指定的路径下，并以提供的唯一标识符命名
     * 主要解决了文件上传过程中的临时存储问题
     *
     * @param file MultipartFile类型的文件，表示上传的文件
     * @param imagePath 字符串类型的路径，表示文件的保存路径
     * @param fileUuid 字符串类型的唯一标识符，用于生成文件名
     * @return 返回保存后的文件名
     * @throws IOException 当文件写入操作失败时，抛出此异常
     */
    public static String makeTempFile(MultipartFile file, String imagePath, String fileUuid) throws IOException {
        // 获取文件的原始名称
        String originalFilename = file.getOriginalFilename();
        // 提取文件扩展名，如果文件名包含"."，则获取最后一个"."之后的部分，否则扩展名为空字符串
        String ext = originalFilename != null && originalFilename.contains(".")
                ? originalFilename.substring(originalFilename.lastIndexOf("."))
                : "";
        // 使用提供的唯一标识符和文件扩展名组合成新的文件名
        String fileName = fileUuid + ext;
        // 创建一个File对象，指向指定的保存路径和新的文件名
        File dest = new File(imagePath, fileName);
        // 检查文件的父目录是否存在，如果不存在则创建
        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdirs();
        }
        // 将上传的文件内容转移到目标文件中
        file.transferTo(dest);
        // 返回保存后的文件名
        return fileName;
    }

}